package com.shopping.util;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 时间工具
 * 
 * @author 喻聪
 * @date 2015-9-11
 */
public class TimeUtil {

	private static SimpleDateFormat simpleDateFormat = new SimpleDateFormat();
	public final static String FORMAT_DATE = "yyyy-MM-dd";
	public final static String FORMAT_DATE_YYMMDD = "yyyyMMdd";
	public final static String FORMAT_TIME = "hh:mm";
	public final static String FORMAT_DATE_TIME = "yyyy-MM-dd hh:mm";
	public final static String FORMAT_DATE_TIME_2 = "yyyy-MM-dd HH:mm";
	public final static String TIME_FORMAT_SHOW_MILLISECOND_WITH_COLON = "yyyy-MM-dd HH:mm:ss";
	public final static String YYYYMMDDHHMMSS = "yyyyMMddHHmmss";
	public final static String FORMAT_MONTH_DAY_TIME = "MM月dd日 hh:mm";
	public final static String MONTH_DAY = "MMdd";


	/**
	 * 获取当前日期的指定格式的字符串:new Date()--->String
	 *
	 * @param format
	 */
	public static String getCurrentTime(String format) {
		if (StringUtil.isEmpty(format)) {
			simpleDateFormat.applyPattern(FORMAT_DATE_TIME);
		} else {
			simpleDateFormat.applyPattern(format);
		}
		return simpleDateFormat.format(new Date());
	}
	
	public static void main(String[] args) {
		//String s = getCurrentTime("yyyy-MM-dd HH:mm:ss");
		String s = getCurrentTime("yyyy-MM-dd");
		System.out.println(s);
		
		//System.out.println(new Date());
	}

	/**
	 * 将long类型的时间格式化：long--->String
	 * 
	 * @param format
	 * @param date
	 */
	public static String formatTimes(String format, long date) {
		if (StringUtil.isEmpty(format)) {
			simpleDateFormat.applyPattern(FORMAT_DATE_TIME);
		} else {
			simpleDateFormat.applyPattern(format);
		}
		return simpleDateFormat.format(new Date(date));
	}

	/**
	 * 将日期字符串以指定格式转换为Date:String--->Date
	 * 
	 * @param time   日期字符串
	 * @param format 指定的日期格式，若为null或""则使用指定的格式"yyyy-MM-dd HH:MM"
	 * @return
	 */
	public static Date getTimeFromString(String timeStr, String format) {
		try {
			return StringUtil.isEmpty(timeStr) ? null : new SimpleDateFormat(format).parse(timeStr);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return null;
	}

	/**
	 * 将Date以指定格式转换为日期时间字符串:Date---->String
	 * 
	 * @param date   日期
	 * @param format 指定的日期时间格式，若为null或""则使用指定的格式"yyyy-MM-dd HH:MM"
	 * @return
	 */
	public static String getStringFromTime(Date time, String format) {
		if (format == null || format.trim().equals("")) {
			simpleDateFormat.applyPattern(FORMAT_DATE_TIME);
		} else {
			simpleDateFormat.applyPattern(format);
		}
		return simpleDateFormat.format(time);
	}

}
